package main

import "fmt"

//参数传递     值传递？  引用传递？       GO语言只有值传递一种方式！

// var a int          func f(a int)        a ->   func   值拷贝
// var a int          func f(pa *int)      &a -> a     地址      pa -> a
// var cache Cache    func f(cache Cache)    cache(pData)  -> data       <- cache(pData)

// 交换2个变量的值
func swap(a, b *int) {
	*b, *a = *a, *b
}

func swap1(a, b int) (int, int) {
	return b, a // 这种方法更好
}

func main() {
	// go语言中  指针不能运算
	var a int = 2
	var pa *int = &a
	*pa = 3
	fmt.Println(a)

	p, q := 3, 5
	swap(&p, &q)
	fmt.Println(p, q)
	fmt.Println("-----------")
	z, x := 6, 7
	z, x = swap1(z, x)
	fmt.Println(z, x)
}
